#include "Texturas.h"

#include <GL\glui.h>
#include <iostream>

using namespace std;
/*
 * Construtor
 */
Texturas::Texturas(int n, int tipoTextura) : num(n) {
	this->lenght_s = 1.0;
	this->lenght_t = 1.0;

	herda = false;
	semText = false;

	// tipo textura
	// 0 -> none
	// 1 -> textura normal
	// 2 -> herda textura

	if(tipoTextura == 0) {
		this->semText = true;
	} else if(tipoTextura == 1) {
		this->herda = false;
		this->semText = false;
	} else if(tipoTextura == 2) {
		this->herda = true;
	} else {
		cout << "Erro na textura" << endl;
	}
}
/*
 * Set's
 */
void Texturas::aplica() {

	if(this->semText) {
		glBindTexture(GL_TEXTURE_2D,0);
		glDisable(GL_TEXTURE_2D);

	} else if(this->herda) {

		glEnable(GL_TEXTURE_2D);

	} else if(!this->herda) {

		glEnable(GL_TEXTURE_2D);
		glBindTexture(GL_TEXTURE_2D,this->num);

		string fich = this->getFicheiro();
		RGBpixmap * pixmap = new RGBpixmap();
		pixmap->readBMPFile((char *)fich.c_str());
		pixmap->setTexture(this->getNum());
	}
}
void Texturas::setFicheiro(string ficheiro) {
	this->ficheiro= ficheiro;
}
void Texturas::setLenghtS(float lenghtS) {
	this->lenght_s = lenghtS;
}
void Texturas::setLenghtT(float lenghtT) {
	this->lenght_t = lenghtT;
}
void Texturas::setNum(int num) {
	this->num = num;
}
/*
 * Get's
 */
string Texturas::getFicheiro() {
	return this->ficheiro;
}
float Texturas::getLenghtS() const {
	return this->lenght_s;
}
float Texturas::getLenghtT() const {
	return this->lenght_t;
}
int Texturas::getNum() const {
	return this->num;
}
